package com.iris.jvmtest.thread;

/**
 * @date : 2017年10月25日 上午11:22:05
 * @author : Iris.Xiao
 * @version : 1.0
 * @description :
 */
public class VolatileTest {
	public static volatile int race = 0;
//	public static volatile AtomicInteger race = 0;//原子数保证并发

	public static void increase() {
		race++;
	}

	private static final int THREADS_COUNT = 20;

	public static void main(String[] args) {
		Thread[] threads = new Thread[THREADS_COUNT];
		for (int i = 0; i < THREADS_COUNT; i++) {
			threads[i] = new Thread(new Runnable() {
				@Override
				public void run() {
					for (int i = 0; i < 10000; i++) {
						increase();
					}
				}
			});
			threads[i].start();
		}
		// 等待所有累加线程都结束
		while (Thread.activeCount() > 1){
			Thread.yield();
		}
		System.out.println(race);
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(race);
	}
}